package com.event.cacheclear.service;

import com.event.common.model.EventCacheKey;
import org.springframework.scheduling.annotation.Async;
import java.util.List;
import java.util.concurrent.TimeUnit;
/*
 * @description 清除缓存服务
 * @author Bing
 * @date 2024/10/8 13:38
 **/
public interface IClearCacheService {
    /**
     * 清除缓存
     * @param cacheKey 缓存key
     */
    @Async
    void clearCache(String cacheKey);
    /**
     * 添加到清除缓存队列
     * @param cacheKey 缓存key
     */
    void addClearCacheQueue(String cacheKey);
    /**
     * 批量处理队列中的缓存清除任务
     * @param batchSize 批量大小
     */
    void popQueueClearCache(int batchSize);
    /**
     * 锁
     * @param key 锁key
     * @param expire 锁过期时间
     * @param unit 时间单位
     * @return 是否获取锁成功
     */
    boolean lock(String key, int expire, TimeUnit unit);

    /**
     * 手动注册缓存key
     * @param eventCacheKey
     */
    void register(EventCacheKey eventCacheKey);

    /**
     * 获取缓存key
     * @param namespaceAlias
     * @return
     */
    List<EventCacheKey> getAliasCacheKey(String namespaceAlias);
}
